<template>
    <div class="container">
      <div class="tips-title">1.基本用法</div>
      <el-radio-group v-model="direction">
        <el-radio label="ltr">从左往右开</el-radio>
        <el-radio label="rtl">从右往左开</el-radio>
        <el-radio label="ttb">从上往下开</el-radio>
        <el-radio label="btt">从下往上开</el-radio>
      </el-radio-group>
      <el-button @click="drawer = true" type="primary" style="margin-left: 16px;">点我打开</el-button>
      <el-drawer title="我是标题" :visible.sync="drawer" :direction="direction" :before-close="handleClose1">
        <span>我来啦!</span>
      </el-drawer>
      <div class="tips-title">2.自定义内容</div>
      <el-button type="text" @click="table = true">打开嵌套表格的 Drawer</el-button>
      <el-button type="text" @click="dialog = true">打开嵌套 Form 的 Drawer</el-button>
      <el-drawer
        title="我嵌套了表格!"
        :visible.sync="table"
        direction="rtl"
        size="50%">
        <el-table :data="gridData">
          <el-table-column property="date" label="日期" width="150"></el-table-column>
          <el-table-column property="name" label="姓名" width="200"></el-table-column>
          <el-table-column property="address" label="地址"></el-table-column>
        </el-table>
      </el-drawer>
      <el-drawer
        title="我嵌套了 Form !"
        :before-close="handleClose2"
        :visible.sync="dialog"
        direction="ltr"
        custom-class="demo-drawer"
        ref="drawer"
        size="24%"
      >
        <div class="demo-drawer__content">
          <el-form :model="form">
            <el-form-item label="活动名称" :label-width="formLabelWidth">
              <el-input v-model="form.name" autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item label="活动区域" :label-width="formLabelWidth">
              <el-select v-model="form.region" placeholder="请选择活动区域">
                <el-option label="区域一" value="shanghai"></el-option>
                <el-option label="区域二" value="beijing"></el-option>
              </el-select>
            </el-form-item>
          </el-form>
          <div class="demo-drawer__footer">
            <el-button @click="cancelForm">取 消</el-button>
            <el-button type="primary" @click="$refs.drawer.closeDrawer()" :loading="loading">{{ loading ? '提交中 ...' : '确 定' }}</el-button>
          </div>
        </div>
      </el-drawer>
      <div class="tips-title">3.多层嵌套</div>
      <el-button @click="drawer3 = true" type="primary" style="margin-left: 16px;">
        点我打开
      </el-button>

      <el-drawer title="我是外面的 Drawer" :visible.sync="drawer3" size="50%">
        <div>
          <el-button @click="innerDrawer = true">打开里面的!</el-button>
          <el-drawer title="我是里面的" :append-to-body="true" :before-close="handleClose3" :visible.sync="innerDrawer">
            <p>_(:зゝ∠)_</p>
          </el-drawer>
        </div>
      </el-drawer>
    </div>
</template>
<script>
  export default {
    name: 'o-drawer',
    data() {
      return {
        drawer: false,
        direction: 'rtl',

        table: false,
        dialog: false,
        loading: false,
        gridData: [{
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }],
        form: {
          name: '',
          region: '',
          date1: '',
          date2: '',
          delivery: false,
          type: [],
          resource: '',
          desc: ''
        },
        formLabelWidth: '80px',
        timer: null,

        drawer3: false,
        innerDrawer: false,
      }
    },
    methods: {
      handleClose1(done) {
        this.$confirm('确认关闭？')
          .then(_ => {
            done();
          })
          .catch(_ => {});
      },
      handleClose2(done) {
        if (this.loading) {
          return;
        }
        this.$confirm('确定要提交表单吗？')
          .then(_ => {
            this.loading = true;
            this.timer = setTimeout(() => {
              done();
              // 动画关闭需要一定的时间
              setTimeout(() => {
                this.loading = false;
              }, 400);
            }, 2000);
          })
          .catch(_ => {});
      },
      cancelForm() {
        this.loading = false;
        this.dialog = false;
        clearTimeout(this.timer);
      },

      handleClose3(done){
        this.$confirm('还有未保存的工作哦确定关闭吗？')
          .then(_ => {
            done();
          })
          .catch(_ => {});
      }
    }
  }
</script>
<style>
  .demo-drawer__content {
    display: flex;
    flex-direction: column;
    height: 100%;
  }
  .demo-drawer__content form {
    flex: 1;
  }
  .el-drawer__body {
    padding: 20px;
    lex: 1;
  }
  .demo-drawer__footer {
    display: flex;
  }
  .demo-drawer__footer button {
    flex: 1;
  }
</style>
